#ifndef TOWN_HPP_INCLUDED
#define TOWN_HPP_INCLUDED

#include <libtcod/libtcod.hpp>

#include "Zone.hpp"

enum EBuildingType
{
	EBT_HOUSE,
	EBT_TOWNHALL
};

class Building: public ITCODBspCallback
{
public:
	Building(Zone* zone);
	~Building();
	
	EBuildingType getBuildingType();
	
	void generate(int x, int y, int w, int h, int subdivs);
	void setBuildingType(EBuildingType type);

private:
	EBuildingType BuildingType;

	Zone* Area;

	bool visitNode(TCODBsp* node, void* userData);
};

class Town: public Zone, public ITCODBspCallback
{
public:
	~Town();

	void generate(std::string name);

private:
	TCODBsp* BSP;

	bool visitNode(TCODBsp* node, void* userData);
};

#endif
